前端进阶之旅前端进阶之旅
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏

完整面试题地址:
作者:程序员poetry
扫码关注作者公众号:「前端进阶之旅」 每天分享技术干货
前端进阶之旅公众号二维码

本章我们将会使用可视化完成 “苏菲的世界中,问题和哲学家之间的关系是怎样的?” 这个任务。也就是看看哪些哲学家回答了哪些抽象的哲学问题。

# 任务分析

这个问题需要分析哲学和问题之间的关系,分成几步:

  • 罗列出哲学家和问题,然后将问题和哲学家进行连接, 使用力导图对问题和参与该问题的哲学家进行可视化
  • 蓝色代表问题,绿色代表哲学家,连线代表哲学家参与了该问题
  • 获取数据洞察

前述从 0 到 1 开发的极简统计图表, 由于力导图的实现相对复杂,这里我们直接用 AntV 成熟的图可视化引擎 G6 来绘制和完成任务。

下面会按照这几个步骤,去实现这样的一个力导图,并从中获得数据洞察。

# 可视分析

# 获取数据

首先我们从《苏菲的世界》中,获取所有问题列表,以及回答过该问题的哲学家,为了简化代码,我们仅列出少量数据和有代表性的数据项,全量数据可在 GitHub 上下载。

// 哲学家列表
const philosophers = [
  {
    name: "泰利斯",
    id: "66",
  },
  // ...
];
// 问题列表
const questions = [
  {
    title: "世界从何而来?",
    id: "0",
  },
  {
    title: "我是谁?",
    id: "1",
  },
];
// 关系列表
const relations = [
  { from: "151", to: "66" },
  // ...
];
@前端进阶之旅: 代码已经复制到剪贴板

# 用 Sparrow 绘制力导向图

力导向图是图可视化的一种,通过算法模拟自然界的引力和斥力去给图中的节点布局。和词云图一样,Sparrow 也没有实现力导向布局算法,所以这里我们用 d3-force 去计算布局,然后再用 Sparrow 去绘制。

image.png

(async () => {
  // 请求数据
  const URLS = [
    "https://gw.alipayobjects.com/os/bmw-prod/d345d2d7-a35d-4d27-af92-4982b3e6b213.json",
fe
基础篇
进阶篇
高频篇
精选篇
手写篇
原理篇
面经篇
自检篇
每日一题
  • 综合
    • 综合题型
    • 其他问题
    • 设计模式
    • 思维导图
    • 学习路线
  • 前端基础
    • HTTP
    • 浏览器
    • 计算机基础
  • 进阶学习
    • NPM工作流
    • Docker
    • Canvas
    • Node学习指南
    • 前端综合文章
  • 其他
    • Handbook
    • 职场话题
    • CSS可视化
小程序题库
公众号动态
博客动态
开发者导航
  • React专栏

    • React组合式开发实战

      • 前端开发的四个时代
      • 企业管理系统的前世今生
      • 可视化页面搭建工具
      • 实战篇 01:开发前准备
      • 实战篇 02:项目脚手架
      • 实战篇 03:页面布局方案
      • 实战篇 04:权限管理机制
      • 实战篇 05:菜单匹配逻辑
      • 实战篇 06:消息通知设计
      • 实战篇 07:多语言支持
      • 继往开来:可视化页面搭建工具
    • React Hooks与Immutable实战

    • React SSR服务端渲染与同构实践

    • IM聊天系统前端开发实践

    • 微前端开发实战

    • React进阶实践

  • Vue专栏

  • 移动端专栏

  • Node专栏

  • 前端工程化专栏

  • 算法专栏

  • Typescript专栏

  • 其他专栏